#!/usr/bin/python
#
#  Geory Cantor证明有理数是可枚举的，他是用一张表来证明这一命题的：
#  第一项是1/1，第二项是是1/2，第三项是2/1，第四项是3/1，第五项是2/2，……。
#  输入N，输出第N项。
#

# 求Geory Cantor表中第n项是什么
# 算法分析: 观察z字型的走向，发现几个特点:
# 1) 沿左下右上斜对角来连线，一条斜线一行, 如: 2, 3, 4, ...
# 2) 在一条线上的分子+分母是相等的，等于斜线行数+1, 如: 第二斜线行, 1/2, 2/1
# 3) 斜线走向，行数是偶数，则在右上角开始；行数是奇数，则在左下角开始，形成奇偶交错现象
# @param n 输入的第n项
# @return 第n项的值i%j
def do_georg_cantor(n: int):
    i = 1 # 分子
    j = 1 # 分母
    line = 1 # 斜线行行数, 注意: 分子 + 分母 = 斜线行数 + 1
    m = 0 # 第几项

    while True:
        while i >= 1 and j >= 1 and i + j == line + 1:
            m += 1
            if m >= n:
                return '%d/%d' % (i, j)

            if line % 2 == 0:
                # 行数是偶数，则分子递增，分母递减
                i += 1
                j -= 1
            else:
                # 行数是奇数，则分子递减, 分母递增
                i -= 1
                j += 1

        # 换行, 走向下一行
        line += 1
        if line % 2 == 0:
            # 行数是偶数，则在右上角开始
            i = 1
            j = line
        else:
            # 行数是奇数，则在左下角开始
            i = line
            j = 1

def main():
    n = int(input('欢迎来到Geory Cantor！ 请输入第N项:'))
    if n < 1:
        print('非法输入!')
        return

    result = do_georg_cantor(n)
    print('第%d项是: %s' % (n, result))

if __name__ == "__main__":
    main()